Sumar las cifras de un número como 4512 da como resultado 12, porque es 12. Hagamos un programa que sume las cifras del entero que le pidas.
El desafío más importante es obtener las cifras y encontrar un bucle que las recorra.
Si suponemos que el número es N, para extraer la cifra más baja, basta con hacer N % 10. El resto de dividir por 10 es el sobrante y es, por tanto, la última cifra. Si hacemos esto en el número 4512 tendremos un 2. Para tener un bucle que funcione bien, necesitamos repetir esto varias veces:
A cada paso se obtiene una cifra y a la vez se prepara el número para la iteración siguiente. La tabla siguiente muestra las iteraciones y los números que salen:
N | cifra de la derecha | próximo N |
---|---|---|
4512 | 2 | 415 |
451 | 1 | 45 |
45 | 5 | 4 |
4 | 4 | 0 |
En el momento en que el próximo N es 0, hemos acabado (porque nos hemos quedado sin cifras). Entonces, el bucle que va pasando por todas las cifras de N es el siguiente:
int cifra; while (N > 0) { cifra = N % 10; N = N / 10; }
Ahora hay que añadir un acumulador suma que vaya acumulando las cifras:
int suma = 0, cifra; while (N > 0) { cifra = N % 10; suma = suma + cifra; N = N / 10; }
De hecho no es necesario guardar la cifra en una variable aparte, se puede sumar directamente:
int suma = 0; while (N > 0) { suma = suma + N % 10; N = N / 10; }
El programa entero es, entonces:
#include <iostream> using namespace std; int main() { int suma = 0, N; cin >> N; while (N > 0) { suma = suma + N % 10; N = N / 10; } cout << suma << endl; }
En preparación